En este estudio de visualización de datos he decidido observar la fuerza que ha tenido la electrificación en el sector automovilístico. Yo mismo trabajo en el sector y tanto de la prensa como de los trabajadores con más experiencia escuchamos que la velocidad de este cambio no tiene precedentes en el sector. Principalmente se podría deber a la legislación que se prevee aplicar a las emisiones contaminantes en las próximas décadas, así como a la competencia global tan fuerte que hay en el mercado actualmente.
En este trabajo no voy a explorar las causas de esta transición sino la magnitud de la propia electrificación, quién han sido los protagonistas y la estructura de la misma. Para ello, he hecho un estudio muy localizado de manera que pueda tener la mayor fiabilidad de los datos posible.
Los datos provienen del censo de matriculaciones del estado de Washington de EEUU. Es prácticamente el único juego de datos, dónde contamos con un censo en lugar de con una muestra. Además, se trata de un estado afluente pero no excesivamente urbano, con lo cual parece una población equilibrada para poner a prueba la tesis principal.
Las dimensiones del conjunto de datos inicial son de 17 columnas y 112634 filas. Tras crear nuevas columnas, eliminar las irrelevantes y acortar los años a la última década (antes de eso los coches eléctricos apenas existían) nos quedan 12 colummnas y 109844 filas. Las nuevas variables creadas son longitud, latitud y rango en kilómetros.
# Importamos el archivo csv.
library(tidyverse)
file_path <- "C:/Users/borja/Desktop/Academia/master/visualizacion/PRACTICA/Electric_Vehicle_Population_Data.csv"
data <- read.csv(file_path)
data <- select(data, 1, City, State, Model.Year, Make, Model,
Electric.Vehicle.Type, Electric.Range,
Vehicle.Location)
names(data)[names(data) == "VIN..1.10."] <- "Plate"
names(data)[names(data) == "Electric.Vehicle.Type"] <- "Type"
names(data)[names(data) == "Model.Year"] <- "Year"
data$Longitude <- str_extract(data$Vehicle.Location,
"[0-9.-]+")
data$Latitude <- str_extract(data$Vehicle.Location,
"[0-9.]+(?=\\))")
data$Range.Km <- round(data$Electric.Range*1.60934)
data <- data[(data$Year<2023 & data$Year>2011),]
# Número de registros y columnas.
print(paste0("Número de columnas: ", ncol(data)))
## [1] "Número de columnas: 12"
print(paste0("Número de filas: ", nrow(data)))
## [1] "Número de filas: 109844"
print("Nombre de las columnas:")
## [1] "Nombre de las columnas:"
colnames(data)
## [1] "Plate" "City" "State" "Year"
## [5] "Make" "Model" "Type" "Electric.Range"
## [9] "Vehicle.Location" "Longitude" "Latitude" "Range.Km"
head(data)
## Plate City State Year Make Model
## 1 JTMEB3FV6N Key West FL 2022 TOYOTA RAV4 PRIME
## 2 1G1RD6E45D Laughlin NV 2013 CHEVROLET VOLT
## 4 1G1FW6S08H Concrete WA 2017 CHEVROLET BOLT EV
## 5 3FA6P0SU1K Everett WA 2019 FORD FUSION
## 6 5YJ3E1EB5J Bothell WA 2018 TESLA MODEL 3
## 7 1N4AZ0CP4D Everett WA 2013 NISSAN LEAF
## Type Electric.Range
## 1 Plug-in Hybrid Electric Vehicle (PHEV) 42
## 2 Plug-in Hybrid Electric Vehicle (PHEV) 38
## 4 Battery Electric Vehicle (BEV) 238
## 5 Plug-in Hybrid Electric Vehicle (PHEV) 26
## 6 Battery Electric Vehicle (BEV) 215
## 7 Battery Electric Vehicle (BEV) 75
## Vehicle.Location Longitude Latitude Range.Km
## 1 POINT (-81.80023 24.5545) -81.80023 24.5545 68
## 2 POINT (-114.57245 35.16815) -114.57245 35.16815 61
## 4 POINT (-121.7515 48.53892) -121.7515 48.53892 383
## 5 POINT (-122.20596 47.97659) -122.20596 47.97659 42
## 6 POINT (-122.18384 47.8031) -122.18384 47.8031 346
## 7 POINT (-122.23019 47.94949) -122.23019 47.94949 121
Eliminamos ahora todas las filas con valores nulos, ya que solo representan 0,02% del total de las filas.
nas <- as.array(rowSums(is.na(data)))
print(paste0("Porcentaje de filas con valores nulos: ",
round((sum(nas>0, na.rm = TRUE)/nrow(data))*100, 2), "%"))
## [1] "Porcentaje de filas con valores nulos: 0.02%"
data <- na.omit(data)
A continuación, visualizamos la evolución de los coches eléctricos tanto PHEV como BEV. Efectivamente, vemos un crecimiento exponencial en la venta de coches eléctricos aunque no en la de híbridos enchufables.
library("ggplot2")
library("tidyverse")
year_count <- table(select(data, Year, Type))
year_count <- as.data.frame(year_count)
names(year_count)[names(year_count) == "Freq"] <- "Ventas"
ggplot(year_count, aes(x = Year, y = Ventas, colour = Type,
group = Type)) + geom_point() + geom_line() +
ggtitle("Venta anual de Coches Eléctricos (2012-2022)")
Ahora veremos qué modelos y que marcas han sido las protagonistas del cambio.
En la primera tabla vemos como Tesla domina el mercado, mientras que en los tres gráficos vemos que esto solo ha sido así en los últimos años, que son sin embargo los que tienen más peso debido al gran número de coches eléctricos vendidos.
library(gt)
library(gtExtras)
library(png)
year_makers <- table(select(data, Year, Make))
year_makers <- as.data.frame(year_makers)
write.csv(year_makers,
"C:/Users/borja/Desktop/Academia/master/visualizacion/PRACTICA/carmaker.csv",
row.names = FALSE)
data$Full.Model <- paste(data$Make, " ", data$Model)
models <- table(select(data, Full.Model))
models <- as.data.frame(models)
names(models)[names(models) == "Freq"] <- "Ventas"
names(models)[names(models) == "Var1"] <- "Modelo"
models <- models[order(models$Ventas, decreasing = TRUE),]
head(models, 7) %>%
gt() %>%
gt_theme_nytimes() %>%
tab_header(title = "Modelos Top Ventas (2012-2022)")
| Modelos Top Ventas (2012-2022) | |
| Modelo | Ventas |
|---|---|
| TESLA MODEL 3 | 22818 |
| TESLA MODEL Y | 16618 |
| NISSAN LEAF | 11972 |
| TESLA MODEL S | 7377 |
| CHEVROLET BOLT EV | 4858 |
| CHEVROLET VOLT | 4823 |
| TESLA MODEL X | 4317 |
makers_2012 <- readPNG("2012.png")
plot.new()
rasterImage(makers_2012,0,0,1,1)
makers_2017 <- readPNG("2017.png")
plot.new()
rasterImage(makers_2017,0,0,1,1)
makers_2022 <- readPNG("2022.png")
plot(0:1,1:0,type="n",ann=FALSE,axes=FALSE)
rasterImage(makers_2022,0,0,1,1)
A continuación, vemos la evolución de la tecnología. Esto significa, como han evolucionado las autonomías de los coches.
Lo que vemos es que la evolución es positiva pero menos marcada que las ventas. También vemos como el coche eléctrico medio cada vez se acerca más a la autonomía del coche con más autonomía de cada año. Lo interpretamos como que la tecnología está siendo cada vez más asequible.
library(tidyr)
avg_km <- aggregate(Range.Km ~ Year,
data = data[(data$Type == "Battery Electric Vehicle (BEV)"
& data$Year <= 2020),]
, FUN = mean)
names(avg_km)[names(avg_km) == "Range.Km"] <- "Avg"
max_km <- aggregate(Range.Km ~ Year,
data = data[(data$Type == "Battery Electric Vehicle (BEV)"
& data$Year <= 2020),]
, FUN = max)
mileage <- cbind(avg_km, max_km$Range.Km)
names(mileage)[names(mileage) == "max_km$Range.Km"] <- "Max"
mileage <- mileage %>%
pivot_longer(
cols = 'Avg':'Max',
names_to = "Types",
values_to = "Range"
)
ggplot(mileage, aes(fill=Types, y=Range , x = Year)) +
geom_bar(position="dodge", stat="identity") +
ggtitle("Average and Maximum Range per Year of Battery Electric Vehicles (2012-2020)")
Por último, vemos dónde se ha dado esta evolución. Lo que observamos en el mapa son los coches vendidos en cada ciudad, que a la vez lo comparamos con la densidad poblacional del estado (2010, Census Bureau U.S.). Lo que observamos es que la electrificación es este estado no ha sido un fenómeno de las grandes ciudades, como podríamos llegar a deducir.
library(tidyverse)
library(sf)
library(mapview)
library(png)
data$Longitude <- as.numeric(data$Longitude)
data$Latitude <- as.numeric(data$Latitude)
map_data <- data[sample(nrow(data), 10000), ]
mapview(map_data, xcol = "Longitude", ycol = "Latitude", crs = 4269, grid = FALSE, map.types = "Stamen.Toner")